package Threads.ThreadPool.DIY_ThreadPool;


import java.util.concurrent.TimeUnit;

//测试线程池的功能
public class test_Threadpool {
    public static void main(String[] args) {
        ThreadPool threadPool=new ThreadPool(2,1000, TimeUnit.MILLISECONDS,2,(queue,task)->{
            /*
                这里是拒绝策略的具体实现，有很多种选择
             */

            // 1. 死等
            queue.put(task);
            // 2) 带超时等待
            // queue.offer(task, 1500, TimeUnit.MILLISECONDS);
            // 3) 让调用者放弃任务执行
            // log.debug("放弃{}", task);
            // 4) 让调用者抛出异常
            // throw new RuntimeException("任务执行失败 " + task);
            // 5) 让调用者自己执行任务
            //task.run();
        });
        for (int i=0;i<5;i++){
            threadPool.execute(()->{
                try {
                    System.out.println(Thread.currentThread().getName()+"running----");
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
        }
    }
}
